package com.spvs.approval.domain.vo;

import lombok.Data;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 审批模板接收类
 */
@Data
public class ApprovalClassifyVo implements Serializable {
    private static final long serialVersionUID = 1L;



    private Integer id;
    /**
     * 分类编码
     */
    private String classifyCode;
    /**
     * 分类名称
     */
    private String classifyName;
    /**
     * 备注
     */
    private String remark;
    /**
     * 创建人
     */
    private String createUser;

    /**
     * 大字段
     */
    private JsonMap jsonMap;


    private int createUserId;

    private Integer deptId;

    private String token;

    private String deptName;

    private String type ;

    /**
     * 大的对象
     */
    @Data
    public static class JsonMap{
        /**
         * 前端标识
         */
        private String frontEndId;
        /**
         * 节点集合
         */
        private Map<String,List<Node>> nodeMap;
    }
    /**
     * 节点信息
     */
    @Data
    public static  class Node{

        private Integer id;
        /**
         * 类型  条件类型01   审批人类型02
         */
        private String type;
        /**
         * 父级标识
         */
        private Integer pid;

        /**
         * 层级
         */
        private Integer level;
        /**
         * 条件节点信息
         */
        private List<Condition> conditions;

        /**
         * 审批人信息
         */
        private People people;


    }

    /**
     * 审批人节点
     */
    @Data
    public static class People{
        private Integer id;
        /**
         * 名称
         */
        private String name;
        /**
         * 部门标识
         */
        private Integer deptId;
        /**
         * 岗位标识
         */
        private Integer postId;
        /**
         * 用户标识
         */
        private String userId;
        private String userIds;
        /**
         * 节点标识
         */
        private Integer nodeId;
        /**
         * 部门名称
         */
        private String deptName;
        /**
         * 岗位名称
         */
        private String postName;
        /**
         * 用户名称
         */
        private String userName;
        private String userNames;
    }
    /**
     * 添加节点
     */
    @Data
    public static class Condition{
        /**
         *主键
         */
        private Integer id;
        /**
         * 规则条件标识
         */
        private Integer ruleConditionId;
        /**
         * 业务标识
         */
        private String compareUnits;
        /**
         *反射字段
         */
        private String field;

        /**
         * 类型
         */
        private String type ;

    }

}
